home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-15 / col_test.zip / TESTER.PRO < prev    next >
Text File  |  1992-02-06  |  14KB  |  624 lines

  1. bgidriver "_SVGA256_driver_far"
  2.  
  3. code=1200
  4.  
  5. /****************************************************************************/
  6. /*                                        */
  7. /*  This is just a little routine that puts the screen colours in SVGA mode */
  8. /*  640 by 480 by 256 up on the screen so you know what the colour numbers  */
  9. /*  are in decimal format for your own programs. This information seems to  */
  10. /*  be left out of all of the manuals for SVGA programming and I suppose a  */
  11. /*  picture is worth a thousand words. There are also commented out         */
  12. /*  routines in the source file that can be manipulated to perform other    */
  13. /*  straight forward graphics functions under PDC Prolog                    */
  14. /*                                        */
  15. /*  Author : Steve Marett, All Rights Reserved, Copyright (c) 1992          */
  16. /*                                        */
  17. /*  Use of this program as compiled (TESTER.EXE) is free and I will not be  */
  18. /*  liable for any damages whatsoever through use or misuse of the program  */
  19. /*  or its associated code.                                 */
  20. /*                                        */
  21. /****************************************************************************/
  22.  
  23. DOMAINS
  24.     file = datafile
  25.     Ax,Bx,Cx,Dx,Si,Di,Ds,Es = integer
  26.         
  27. PREDICATES
  28.  
  29.     mes_squares(integer,integer,integer,integer,integer,integer)
  30.     put_squares(integer,integer,integer,integer,integer)
  31.     do_looper(integer,integer)
  32.     initialise
  33.     draw_it(integer,integer,integer,integer,integer,integer,integer)
  34.     draw_palette(integer,integer,integer,integer,integer,integer,integer)
  35.     draw_random(real)
  36.     draw(integer,integer,integer,integer,integer)
  37.     random_line(real)
  38.     random_circle(real)
  39.     degrees_to_loc(real,real,real,real,real,real)
  40.     shift_stars(real,real)
  41.     random_stars(real)
  42.     random_star(real,real)
  43.     make_stars
  44.     do_shift(real,real,real,real)
  45.     show1(real,real)
  46.     show2(real,real,real,real)
  47.     show3(real,real,real,real,real,real)
  48.     show4(real,real,real,real,real,real,real,real)
  49.     show5(real,real,real,real,real,real,real,real,real,real)
  50.     show6(real,real,real,real,real,real,real,real,real,real,real,real)
  51.     show7(real,real,real,real,real,real,real,real,real,real,real,real,real,real)
  52.     do_back(real)            
  53.  
  54. /*
  55. include "BGI.PRE"
  56. */
  57. GOAL
  58.     initialise.
  59.     
  60. /**------------------------------------------------------------------------**/
  61. /**                             CLAUSES BODY                               **/
  62. /**------------------------------------------------------------------------**/
  63.  
  64. CLAUSES
  65.         
  66.     INITIALISE if
  67.         clearwindow,
  68.         Ba=11,Fc=2,
  69.         initgraph(Ba,Fc,_,_,""),
  70. /*        setgraphmode(Fc),
  71.         IntNo1=$0A,Axi=$005D,
  72.         bios(IntNo1,reg(Axi,0,0,0,0,0,0,0),reg(Axo,_,_,_,_,_,_,_),Flag1), 
  73.         bios(IntNo1,reg(AXi,0,0,0,0,0,0,0),reg(_,_,_,_,_,_,_,_),Flag2), 
  74.         IntNo2=$14,
  75.         bios(IntNo2,reg(AXi,0,0,0,0,0,0,0),reg(_,_,_,_,_,_,_,_),Flag3), 
  76.         setwritemode(0),
  77. */        getgraphmode(X),
  78.         getmaxcolor(Y),
  79.         getpalettesize(Z),
  80.         getmaxx(Aa),
  81.         getmaxy(Ab),
  82.         moveto(0,0),
  83.         write(" Present Driver = ",Ba),nl,
  84.         write("   Present Mode = ",Fc),nl,
  85.         write("       New Mode = ",X),nl,
  86.         write("Maximum Colours = ",Y),nl,
  87.         write("   Pallete Size = ",Z),nl,
  88.         write("    Screen Size = ",Aa," by ",Ab),nl,
  89.         readchar(_),
  90.         setvisualpage(0),
  91.         cleardevice,
  92.         setactivepage(1),
  93.         cleardevice,
  94.         moveto(0,0),
  95. /*        write("What character increment --> "),readln(Vua),
  96.         str_int(Vua,Valuex),
  97. */        mes_squares(1,0,0,0,39,29),
  98.         cleardevice,
  99.         mes_squares(1,0,0,0,39,29),
  100. /*        do_looper(0,Valuex),
  101.         draw(0,0,639,0,0),
  102.         draw_it(0,0,639,0,0),
  103.         setwritemode(0),        
  104.         draw_random(0),
  105.         readchar(_),
  106.         setlinestyle(0,$FFFF,3),
  107.         setcolor(12),
  108.         rectangle(50,100,400,150),
  109.         readchar(_),
  110.         setfillstyle(1,12),
  111.         floodfill(55,105,12),
  112.         readchar(_),
  113.         bar3d(50,200,400,250,20,110),
  114.         readchar(_),
  115.         cleardevice,
  116.         setlinestyle(0,$FFFF,1),
  117.         random_line(0),
  118.         readchar(_),
  119.         cleardevice,
  120.         setactivepage(0),
  121.         setvisualpage(0),
  122.         setwritemode(0),        
  123.         setlinestyle(0,$FFFF,3),
  124.         setbkcolor(0),
  125.         do_back(0),
  126.         setfillstyle(1,4),
  127.         setcolor(4),
  128.         circle(319,239,5),
  129.         floodfill(319,239,4),
  130.         setlinestyle(0,$FFFF,1),
  131.         make_stars,
  132.         random_circle(0),
  133.         readchar(_),
  134.         cleardevice,
  135.         setlinestyle(0,$FFFF,1),
  136.         degrees_to_loc(0,1),
  137. */        setvisualpage(0),
  138.         setvisualpage(1),
  139.         readchar(_),
  140.         closegraph,
  141.         clearwindow,
  142.         exit.
  143.  
  144.     DO_LOOPER(X,Valuex) if
  145.         Xa=X+1,
  146.         X < 1,!,
  147.         cleardevice,
  148.         write("This is spacing by ",X),
  149.         readchar(_),
  150.         cleardevice,
  151.         draw_it(0,0,639,0,0,X,Valuex),
  152.         readchar(_),
  153.         do_looper(Xa,Valuex).
  154.         
  155.     DO_LOOPER(_,_) if !.
  156.         
  157.     DRAW(A,B,C,D,E) if
  158.         Ea=E+1,
  159.         Ba=B+1,
  160.         Ba < 256,!,
  161.         setbkcolor(0),
  162.         setcolor(E),
  163.         line(A,B,C,D),
  164.         draw(A,Ba,C,Ba,Ea).
  165.  
  166.     DRAW(_,_,_,_,_) if !.
  167.  
  168.     DRAW_IT(A,B,C,D,E,Value,Valuex) if
  169.         Ea = E + Valuex,
  170.         Ba = B + 1,
  171.         Ba < 256,!,
  172.         setbkcolor(0),
  173.         Ya=E,
  174.         draw_palette(A,B,C,D,Ya,1,Value),
  175.         draw_it(A,Ba,C,Ba,Ea,Value,Valuex).
  176.  
  177.     DRAW_IT(_,_,_,_,_,_,_) if !.
  178.  
  179.     DRAW_PALETTE(A,B,C,D,X,Y,Value) if
  180.         Xa=X+0,
  181.         Ya = Y - 1,
  182.         Xa < 256,
  183.         Ya > - 1,!,
  184.         Ba = B + 1,
  185.         setcolor(X),
  186.         line(A,B,C,D),
  187.         draw_palette(A,Ba,C,Ba,Xa,Ya,Value).
  188.  
  189.     DRAW_PALETTE(_,_,_,_,_,_,_) if !.
  190.  
  191.     DRAW_RANDOM(A) if
  192.         Aa=A+1,
  193.         Aa < 5000,!,
  194.         random(50,X),
  195.         random(50,Y),
  196.         random(255,Z),
  197.         putpixel(X,Y,Z),
  198.         draw_random(Aa).
  199.         
  200.     DRAW_RANDOM(_) if !.
  201.  
  202.     RANDOM_LINE(A) if
  203.         Aa=A+1,
  204.         Aa < 1000,!,
  205.         random(639,X),
  206.         random(479,Y),
  207.         random(639,Xa),
  208.         random(479,Ya),
  209.         random(255,Z),
  210.         setcolor(Z),
  211.         line(X,Y,Xa,Ya),
  212.         random_line(Aa).
  213.     
  214.     RANDOM_LINE(_) if !.
  215.  
  216.     RANDOM_CIRCLE(A) if
  217.         Aa=A+1,
  218.         Aa < 50,!,
  219.         random(639,X),
  220.         random(479,Y),
  221.         random(100,Xa),
  222.         random(14,Z),
  223.         random(14,Za),
  224.         Zb=Za+1,
  225. /*        Zc=Z+1,
  226.         setcolor(Zc),
  227.         circle(X,Y,Xa),
  228. */        degrees_to_loc(X,Y,Xa,Zb,0,16),
  229.         random_circle(Aa).
  230.     
  231.     RANDOM_CIRCLE(_) if !.
  232.  
  233.     DEGREES_TO_LOC(X,Y,Xa,Za,Start,End) if
  234.         setcolor(0),
  235.         Xb=Xa+25,
  236.         arc(X,Y,Start,End,Xb),
  237.         getarccoords(_,_,_,_,Xend,Yend),
  238.         setcolor(End),
  239.         line(X,Y,Xend,Yend),
  240.         Start_new = End,
  241.         End_new = End + 1,
  242.         Start_new < 180,!,
  243.         degrees_to_loc(X,Y,Xa,Za,Start_new,End_new).
  244.         
  245.     DEGREES_TO_LOC(_,_,_,_,_,_) if !.
  246.  
  247.     MAKE_STARS if
  248.         random(10,Z),
  249.         Za=Z+6,
  250.         random_stars(Za),!,
  251.         make_stars.
  252.  
  253.     MAKE_STARS if make_stars.
  254.             
  255.     MAKE_STARS if !,make_stars.
  256.             
  257.     RANDOM_STAR(Xa1,Ya1) if
  258.         random(60,X1),
  259.         random(20,Y1),
  260.         Xa1=X1+289,
  261.         Ya1=Y1+229.
  262.  
  263.     DO_SHIFT(X1,Y1,Xa1,Ya1) if
  264.         X1 < 319, Y1 < 239,
  265.         Xa1=((X1-0)-((319-X1)*2)),Ya1=((Y1-0)-((239-Y1)*2)),
  266.         Y1 > -1,!,
  267.         shift_stars(X1,Y1).
  268.  
  269.     DO_SHIFT(X1,Y1,Xa1,Ya1) if
  270.         X1 > 318, Y1 < 239,
  271.         Xa1=((X1-0)+((X1-319)*2)),Ya1=((Y1-0)-((239-Y1)*2)),
  272.         Y1 > -1,!,
  273.         shift_stars(X1,Y1).
  274.  
  275.     DO_SHIFT(X1,Y1,Xa1,Ya1) if
  276.         X1 < 319, Y1 > 238,
  277.         Xa1=((X1-0)-((319-X1)*2)),Ya1=((Y1-0)+((Y1-239)*2)),
  278.         X1 > -1,
  279.         Y1 < 480,!,
  280.         shift_stars(X1,Y1).
  281.  
  282.     DO_SHIFT(X1,Y1,Xa1,Ya1) if
  283.         X1 > 318, Y1 > 238,
  284.         Xa1=((X1-0)+((X1-319)*2)),Ya1=((Y1-0)+((Y1-239)*2)),
  285.         X1 < 640,
  286.         Y1 < 480,!,
  287.         shift_stars(X1,Y1).
  288.  
  289.     DO_SHIFT(_,_,0,0) if !.
  290.  
  291.     SHOW1(X1,Y1) if
  292.         do_shift(X1,Y1,Xa1,Ya1),
  293.         Ya1 > -1,!,
  294.         show1(Xa1,Ya1).
  295.  
  296.     SHOW1(_,_) if !.
  297.  
  298.     SHOW2(X1,Y1,X2,Y2) if
  299.         do_shift(X1,Y1,Xa1,Ya1),
  300.         do_shift(X2,Y2,Xa2,Ya2),
  301.         Ya1+Ya2 > -1,!,
  302.         show2(Xa1,Ya1,Xa2,Ya2).
  303.  
  304.     SHOW2(_,_,_,_) if !.
  305.  
  306.     SHOW3(X1,Y1,X2,Y2,X3,Y3) if
  307.         do_shift(X1,Y1,Xa1,Ya1),
  308.         do_shift(X2,Y2,Xa2,Ya2),
  309.         do_shift(X3,Y3,Xa3,Ya3),
  310.         Ya1+Ya2+Ya3 > -1,!,
  311.         show3(Xa1,Ya1,Xa2,Ya2,Xa3,Ya3).
  312.  
  313.     SHOW3(_,_,_,_,_,_) if !.
  314.  
  315.     SHOW4(X1,Y1,X2,Y2,X3,Y3,X4,Y4) if
  316.         do_shift(X1,Y1,Xa1,Ya1),
  317.         do_shift(X2,Y2,Xa2,Ya2),
  318.         do_shift(X3,Y3,Xa3,Ya3),
  319.         do_shift(X4,Y4,Xa4,Ya4),
  320.         Ya1+Ya2+Ya3+Ya4 > -1,!,
  321.         show4(Xa1,Ya1,Xa2,Ya2,Xa3,Ya3,Xa4,Ya4).
  322.  
  323.     SHOW4(_,_,_,_,_,_,_,_) if !.
  324.  
  325.     SHOW5(X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5) if
  326.         do_shift(X1,Y1,Xa1,Ya1),
  327.         do_shift(X2,Y2,Xa2,Ya2),
  328.         do_shift(X3,Y3,Xa3,Ya3),
  329.         do_shift(X4,Y4,Xa4,Ya4),
  330.         do_shift(X5,Y5,Xa5,Ya5),
  331.         Ya1+Ya2+Ya3+Ya4+Ya5 > -1,!,
  332.         show5(Xa1,Ya1,Xa2,Ya2,Xa3,Ya3,Xa4,Ya4,Xa5,Ya5).
  333.  
  334.     SHOW5(_,_,_,_,_,_,_,_,_,_) if !.
  335.  
  336.     SHOW6(X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6) if
  337.         do_shift(X1,Y1,Xa1,Ya1),
  338.         do_shift(X2,Y2,Xa2,Ya2),
  339.         do_shift(X3,Y3,Xa3,Ya3),
  340.         do_shift(X4,Y4,Xa4,Ya4),
  341.         do_shift(X5,Y5,Xa5,Ya5),
  342.         do_shift(X6,Y6,Xa6,Ya6),
  343.         Ya1+Ya2+Ya3+Ya4+Ya5+Ya6 > -1,!,
  344.         show6(Xa1,Ya1,Xa2,Ya2,Xa3,Ya3,Xa4,Ya4,Xa5,Ya5,Xa6,Ya6).
  345.  
  346.     SHOW6(_,_,_,_,_,_,_,_,_,_,_,_) if !.
  347.  
  348.     SHOW7(X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6,X7,Y7) if
  349.         do_shift(X1,Y1,Xa1,Ya1),
  350.         do_shift(X2,Y2,Xa2,Ya2),
  351.         do_shift(X3,Y3,Xa3,Ya3),
  352.         do_shift(X4,Y4,Xa4,Ya4),
  353.         do_shift(X5,Y5,Xa5,Ya5),
  354.         do_shift(X6,Y6,Xa6,Ya6),
  355.         do_shift(X7,Y7,Xa7,Ya7),
  356.         Ya1+Ya2+Ya3+Ya4+Ya5+Ya6+Ya7 > -1,!,
  357.         show7(Xa1,Ya1,Xa2,Ya2,Xa3,Ya3,Xa4,Ya4,Xa5,Ya5,Xa6,Ya6,Xa7,Ya7).
  358.  
  359.     SHOW7(_,_,_,_,_,_,_,_,_,_,_,_,_,_) if !.
  360.  
  361.     RANDOM_STARS(1) if
  362.         random_star(X1,Y1),
  363.         show1(X1,Y1).
  364.         
  365.     RANDOM_STARS(2) if
  366.         random_star(X1,Y1),
  367.         random_star(X2,Y2),
  368.         show2(X1,Y1,X2,Y2).
  369.         
  370.     RANDOM_STARS(3) if
  371.         random_star(X1,Y1),
  372.         random_star(X2,Y2),
  373.         random_star(X3,Y3),
  374.         show3(X1,Y1,X2,Y2,X3,Y3).
  375.  
  376.     RANDOM_STARS(4) if
  377.         random_star(X1,Y1),
  378.         random_star(X2,Y2),
  379.         random_star(X3,Y3),
  380.         random_star(X4,Y4),
  381.         show4(X1,Y1,X2,Y2,X3,Y3,X4,Y4).
  382.  
  383.     RANDOM_STARS(5) if
  384.         random_star(X1,Y1),
  385.         random_star(X2,Y2),
  386.         random_star(X3,Y3),
  387.         random_star(X4,Y4),
  388.         random_star(X5,Y5),
  389.         show5(X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5).
  390.  
  391.     RANDOM_STARS(6) if
  392.         random_star(X1,Y1),
  393.         random_star(X2,Y2),
  394.         random_star(X3,Y3),
  395.         random_star(X4,Y4),
  396.         random_star(X5,Y5),
  397.         random_star(X6,Y6),
  398.         show6(X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6).
  399.  
  400.     RANDOM_STARS(7) if
  401.         random_star(X1,Y1),
  402.         random_star(X2,Y2),
  403.         random_star(X3,Y3),
  404.         random_star(X4,Y4),
  405.         random_star(X5,Y5),
  406.         random_star(X6,Y6),
  407.         random_star(X7,Y7),
  408.         show7(X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6,X7,Y7).
  409.  
  410.     RANDOM_STARS(_) if !.
  411.  
  412.     SHIFT_STARS(X1,Y1) if
  413.         X1 < 319, Y1 < 239,!,
  414.         Xa1=((X1-0)-((319-X1)*2)),Ya1=((Y1-0)-((239-Y1)*2)),
  415.         putpixel(X1,Y1,0),
  416. /*        Ya1 > -1,!,
  417. */        putpixel(Xa1,Ya1,15).
  418.         
  419.     SHIFT_STARS(X1,Y1) if
  420.         X1 > 318, Y1 < 239,!,
  421.         Xa1=((X1-0)+((X1-319)*2)),Ya1=((Y1-0)-((239-Y1)*2)),
  422.         putpixel(X1,Y1,0),
  423. /*        Ya1 > -1,!,
  424. */        putpixel(Xa1,Ya1,14).
  425.         
  426.     SHIFT_STARS(X1,Y1) if
  427.         X1 < 319, Y1 > 238,!,
  428.         Xa1=((X1-0)-((319-X1)*2)),Ya1=((Y1-0)+((Y1-239)*2)),
  429.         putpixel(X1,Y1,0),
  430. /*        Ya1 < 480,!,
  431. */        putpixel(Xa1,Ya1,12).
  432.         
  433.     SHIFT_STARS(X1,Y1) if
  434.         X1 > 318, Y1 > 238,!,
  435.         Xa1=((X1-0)+((X1-319)*2)),Ya1=((Y1-0)+((Y1-239)*2)),
  436.         putpixel(X1,Y1,0),
  437. /*        Ya1 < 480,!,
  438. */        putpixel(Xa1,Ya1,11).
  439.         
  440.     SHIFT_STARS(_,_) if !.
  441.  
  442.     DO_BACK(Count) if
  443.         Countx=Count+1,
  444.         Countx < 50,!,
  445.         random(639,X),
  446.         random(479,Y),
  447.         random(14,Z),
  448.         Za=Z+1,
  449.         putpixel(X,Y,Za),
  450.         do_back(Countx).
  451.         
  452.     DO_BACK(_) if !.
  453.  
  454.     MES_SQUARES(1,X,A,B,C,D) if
  455.         X < 16,!,
  456.         put_squares(X,A,B,C,D),
  457.         Aa=A+40,Ca=C+40,
  458.         Xa=X+1,
  459.         mes_squares(1,Xa,Aa,B,Ca,D).
  460.         
  461.     MES_SQUARES(1,X,_,_,_,_) if !,
  462.         mes_squares(2,X,0,30,40,59).
  463.  
  464.     MES_SQUARES(2,X,A,B,C,D) if
  465.         X < 32,!,
  466.         put_squares(X,A,B,C,D),
  467.         Aa=A+40,Ca=C+40,
  468.         Xa=X+1,
  469.         mes_squares(2,Xa,Aa,B,Ca,D).
  470.         
  471.     MES_SQUARES(2,X,_,_,_,_) if !,
  472.         mes_squares(3,X,0,60,40,89).
  473.  
  474.     MES_SQUARES(3,X,A,B,C,D) if
  475.         X < 48,!,
  476.         put_squares(X,A,B,C,D),
  477.         Aa=A+40,Ca=C+40,
  478.         Xa=X+1,
  479.         mes_squares(3,Xa,Aa,B,Ca,D).
  480.         
  481.     MES_SQUARES(3,X,_,_,_,_) if !,
  482.         mes_squares(4,X,0,90,40,119).
  483.  
  484.     MES_SQUARES(4,X,A,B,C,D) if
  485.         X < 64,!,
  486.         put_squares(X,A,B,C,D),
  487.         Aa=A+40,Ca=C+40,
  488.         Xa=X+1,
  489.         mes_squares(4,Xa,Aa,B,Ca,D).
  490.         
  491.     MES_SQUARES(4,X,_,_,_,_) if !,
  492.         mes_squares(5,X,0,120,40,149).
  493.  
  494.     MES_SQUARES(5,X,A,B,C,D) if
  495.         X < 80,!,
  496.         put_squares(X,A,B,C,D),
  497.         Aa=A+40,Ca=C+40,
  498.         Xa=X+1,
  499.         mes_squares(5,Xa,Aa,B,Ca,D).
  500.         
  501.     MES_SQUARES(5,X,_,_,_,_) if !,
  502.         mes_squares(6,X,0,150,40,179).
  503.  
  504.     MES_SQUARES(6,X,A,B,C,D) if
  505.         X < 96,!,
  506.         put_squares(X,A,B,C,D),
  507.         Aa=A+40,Ca=C+40,
  508.         Xa=X+1,
  509.         mes_squares(6,Xa,Aa,B,Ca,D).
  510.         
  511.     MES_SQUARES(6,X,_,_,_,_) if !,
  512.         mes_squares(7,X,0,180,40,209).
  513.  
  514.     MES_SQUARES(7,X,A,B,C,D) if
  515.         X < 112,!,
  516.         put_squares(X,A,B,C,D),
  517.         Aa=A+40,Ca=C+40,
  518.         Xa=X+1,
  519.         mes_squares(7,Xa,Aa,B,Ca,D).
  520.         
  521.     MES_SQUARES(7,X,_,_,_,_) if !,
  522.         mes_squares(8,X,0,210,40,239).
  523.  
  524.     MES_SQUARES(8,X,A,B,C,D) if
  525.         X < 128,!,
  526.         put_squares(X,A,B,C,D),
  527.         Aa=A+40,Ca=C+40,
  528.         Xa=X+1,
  529.         mes_squares(8,Xa,Aa,B,Ca,D).
  530.         
  531.     MES_SQUARES(8,X,_,_,_,_) if !,
  532.         mes_squares(9,X,0,240,40,269).
  533.  
  534.     MES_SQUARES(9,X,A,B,C,D) if
  535.         X < 144,!,
  536.         put_squares(X,A,B,C,D),
  537.         Aa=A+40,Ca=C+40,
  538.         Xa=X+1,
  539.         mes_squares(9,Xa,Aa,B,Ca,D).
  540.         
  541.     MES_SQUARES(9,X,_,_,_,_) if !,
  542.         mes_squares(10,X,0,270,40,299).
  543.  
  544.     MES_SQUARES(10,X,A,B,C,D) if
  545.         X < 160,!,
  546.         put_squares(X,A,B,C,D),
  547.         Aa=A+40,Ca=C+40,
  548.         Xa=X+1,
  549.         mes_squares(10,Xa,Aa,B,Ca,D).
  550.         
  551.     MES_SQUARES(10,X,_,_,_,_) if !,
  552.         mes_squares(11,X,0,300,40,329).
  553.  
  554.     MES_SQUARES(11,X,A,B,C,D) if
  555.         X < 176,!,
  556.         put_squares(X,A,B,C,D),
  557.         Aa=A+40,Ca=C+40,
  558.         Xa=X+1,
  559.         mes_squares(11,Xa,Aa,B,Ca,D).
  560.         
  561.     MES_SQUARES(11,X,_,_,_,_) if !,
  562.         mes_squares(12,X,0,330,40,359).
  563.  
  564.     MES_SQUARES(12,X,A,B,C,D) if
  565.         X < 192,!,
  566.         put_squares(X,A,B,C,D),
  567.         Aa=A+40,Ca=C+40,
  568.         Xa=X+1,
  569.         mes_squares(12,Xa,Aa,B,Ca,D).
  570.         
  571.     MES_SQUARES(12,X,_,_,_,_) if !,
  572.         mes_squares(13,X,0,360,40,389).
  573.  
  574.     MES_SQUARES(13,X,A,B,C,D) if
  575.         X < 208,!,
  576.         put_squares(X,A,B,C,D),
  577.         Aa=A+40,Ca=C+40,
  578.         Xa=X+1,
  579.         mes_squares(13,Xa,Aa,B,Ca,D).
  580.         
  581.     MES_SQUARES(13,X,_,_,_,_) if !,
  582.         mes_squares(14,X,0,390,40,419).
  583.  
  584.     MES_SQUARES(14,X,A,B,C,D) if
  585.         X < 224,!,
  586.         put_squares(X,A,B,C,D),
  587.         Aa=A+40,Ca=C+40,
  588.         Xa=X+1,
  589.         mes_squares(14,Xa,Aa,B,Ca,D).
  590.         
  591.     MES_SQUARES(14,X,_,_,_,_) if !,
  592.         mes_squares(15,X,0,420,40,449).
  593.  
  594.     MES_SQUARES(15,X,A,B,C,D) if
  595.         X < 240,!,
  596.         put_squares(X,A,B,C,D),
  597.         Aa=A+40,Ca=C+40,
  598.         Xa=X+1,
  599.         mes_squares(15,Xa,Aa,B,Ca,D).
  600.         
  601.     MES_SQUARES(15,X,_,_,_,_) if !,
  602.         mes_squares(16,X,0,450,40,479).
  603.  
  604.     MES_SQUARES(16,X,A,B,C,D) if
  605.         X < 256,!,
  606.         put_squares(X,A,B,C,D),
  607.         Aa=A+40,Ca=C+40,
  608.         Xa=X+1,
  609.         mes_squares(16,Xa,Aa,B,Ca,D).
  610.         
  611.     MES_SQUARES(_,_,_,_,_,_) if !.
  612.  
  613.     PUT_SQUARES(X,A,B,C,D) if
  614.         setlinestyle(0,$FFFF,3),
  615.         setfillstyle(1,X),
  616.         setcolor(17),
  617.         rectangle(A,B,C,D),
  618.         Aa = A + 4,Ba = B + 4,
  619.         floodfill(Aa,Ba,17),
  620.         Ab = A + 10,Bb = B + 12,
  621.         str_int(Xa,X),
  622.         setcolor(0),
  623.         outtextxy(Ab,Bb,Xa).
  624.